<?php

namespace Payment\Common\TLpay\Data\Charge;

use Payment\Common\PayException;
use Payment\Utils\ArrayUtil;

/**
 * Class TLChargeData
 * 通联支付
 *
 * @property string $openid  trade_type=JSAPI，此参数必传，用户在商户appid下的唯一标识
 * @property string $sub_appid 微信分配的子商户公众账号ID
 * @property string $sub_mch_id 	微信支付分配的子商户号
 * @property string $sub_openid 用户在子商户appid下的唯一标识
 *
 * @package Payment\Common\Weixin\Data\Charge
 * anthor yeran
 */
class TLChargeData extends ChargeBaseData
{
    protected function checkDataParam()
    {
        parent::checkDataParam(); // TODO: Change the autogenerated stub

        // 公众号支付,必须设置openid
        $acct = $this->acct;
        if (empty($acct)) {
            throw new PayException('用户唯一标识，必须携带');
        }
    }

    /**
     * 组装数据，用于计算sign，以及与支付平台对接
     */
    protected function buildData()
    {
        $signData = [
            // 基本数据
            'appid' => trim($this->appId),
            'cusid'    => trim($this->cusid),
            'version'  => $this->version,
            'randomstr' => $this->randomstr,
            'paytype' => $this->paytype,
            'notify_url'    => $this->notifyUrl,
            'limit_pay' => $this->limitPay,  // 指定不使用信用卡

            // 业务数据
            'body'  => trim($this->body),
            'remark'    => trim($this->remark),
            'reqsn'  => trim($this->reqsn),
            'trxamt' => $this->trxamt,//单位分
            'acct' => $this->acct
        ];

        // 移除数组中的空值
        $this->retData = ArrayUtil::paraFilter($signData);

    }
}
